
//这里给出链式存储的结构
typedef struct LinkStackNode{
    int data;
    struct LinkStackNode *next;
}LinkedStack;

//所有操作都要在头节点进行
//而且没有头节点前驱
void initLinkedStack(LinkedStack *s){

}

void push(LinkStackNode *s,int data){
    if(s==nullptr){
        s=new LinkedStack();
        s->data=data;
        s->next=nullptr;
    }else{
        auto temp=new LinkedStack();
        temp->data=data;
        temp->next=s;//使用头插法，且新加入的数据作为新的头
        s=temp;
    }
}

void pop(LinkStackNode *s){
    if(s==nullptr){
        return;
    }else{
        s=s->next;//新加入的（也就是头）最先出栈
    }
}

bool getTop(LinkStackNode *s){
    if(empty(s)){
        return false;//取数失败
    }else{
        return s->data;//头节点数据就是top
    }

}

bool empty(LinkStackNode* s){
    if(s==nullptr){
        return true;
    }
    return false;
}